Maps symbols in symbol-pattern to tonalities described in tonality-zones using transpose-patterns to control the transposition. The function returns a list of tonality zones. transpose-patterns describe how each symbol is transposed before it is mapped onto a tonality zone.
This function creates tonality note lists from symbol patterns. The ouput tonality can serve again as a mapper to new symbols. This process quickly creates very high ordered, but non-random tonalities. The function symbols-to-tonality is a challenging concept that can be expressed in a variety of ways. In its simplest form it can let the composer view the mapping of symbols onto a tonality. Here is an example showing a tonality output that directly follows the shapes of the symbol patterns.
(activate-tonality (chromatic c 3))
--> ((c 3 c# 3 d 3 d# 3 e 3 f 3 f# 3 g 3 g# 3 a 3 a# 3 b 3))
(setq symb1 '(a b c d e f g))
(setq symb2 '(b d e d e))
(setq tonal
(flatten
(symbols-to-tonality
symbols (append symb1 symb2)
transpose '((0))
mapping (activate-tonality (chromatic c 3))))
)
--> (c 3 c# 3 d 3 d# 3 e 3 f 3 f# 3 c# 3 d# 3 e 3 d# 3 e 3)
a b c d e f g b d e d e
Transpositions
However, the transpose section of this function enables far more complex mapping to take place. Not only can each symbol of the pattern be mapped to a tonality but the symbol pattern itself can become a template for a sequence of tonalities, its symbols controlling the degree of transposition. The result is a unique sequence of tonality descriptions.
(setq tonal
(symbols-to-tonality
symbols '(a b c d)
transpose '((0 1 2) (0 3 2 1))
mapping (activate-tonality (chromatic c 3)))
)
((c 3 c# 3 d 3) (c# 3 e 3 d# 3 d 3) (d 3 d# 3 e 3) (d# 3 f# 3 f 3 e 3))
a (0 1 2) b (0 3 2 1) c (0 1 2) d (0 3 2 1)
Multiple Tonalities
This shows how you can apply multiple tonalities as template for symbol mapping to produce more complex tonalities.
(setq chords2
(symbols-to-tonality
symbols '(a b c d)
transpose '((0 1) (3 4 5))
mapping (activate-tonality
(chromatic c 3)
(chromatic c 2)
(chromatic c 1))
)
)
--> ((c 3 |C#| 3) (e 2 f 2 |F#| 2) (d 1 |D#| 1) (|F#| 3 g 3 |G#| 3))
Note that it is the symbols, which are transposed, not the notes. If you use a major scale then the transpose scheme 0 2 4 gives you a triad arpeggio, which position is determined by the symbol pattern. This triad is projected in different levels in the major scale according the input symbol pattern, a creates Ist level chord, b the 2nd level chord etc.
(setq symbols '(a b c d e f g))
(setq chords
(symbols-to-tonality
symbols symbols
transpose '((0 1) (3 4 5))
mapping (activate-tonality (chromatic c 3))
)
)
--> ((c 3 c# 3) (e 3 f 3 f# 3) (d 3 d# 3) (f# 3 g 3 g#3)